package com.test45_JUC;

import java.util.Map;
import java.util.Set;
import java.util.concurrent.ConcurrentSkipListMap;
import java.util.concurrent.ConcurrentSkipListSet;

/**
 * 跳表集合
 * 对于跳表的实现机制，是基于一个完整的有序列表链表结构。
 * 那么在里面可以考虑通过数据的抽样操作来选择一个数据的操作基点，在每一次进行数据查询的时候是依据这个基点来进行判断。
 */
public class Demo19_ConcurrentSkipListMap {

    public static void main(String[] args) {
        // test1();
        test2();
    }

    /**
     * ConcurrentSkipListMap
     */
    public static void test1() {
        Map<String, String> map = new ConcurrentSkipListMap<>();
        for (int x = 0; x < 10; x++) {
            new Thread(() -> {
                for (int y = 0; y < 10; y++) {
                    map.put("【" + Thread.currentThread().getName() + "】y=" + y, "www.yootk.com");
                    // System.out.println(map.get("【" + Thread.currentThread().getName() + "】y=" + y));
                    System.out.println(map);
                }
            }, "集合操作线程-"+x).start();
        }
    }

    /**
     * ConcurrentSkipListSet
     * 内部是使用ConcurrentSkipListMap实现的
     */
    public static void test2() {
        Set<String> set = new ConcurrentSkipListSet<>();
        for (int x = 0; x < 10; x++) {
            new Thread(() -> {
                for (int y = 0; y < 10; y++) {
                    set.add("【" + Thread.currentThread().getName() + "】www.yootk.com");
                    // System.out.println(set.contains("【" + Thread.currentThread().getName() + "】www.yootk.com"));
                    System.out.println(set);
                }
            }, "集合操作线程-"+x).start();
        }
    }
}
